Desenvolvimento para Dispositivos Móveis
Aula 05
Prof. Dr. Raulcézar Alves
raulcezar@gmail.com

Criar no funcionalidade para listar IMC das pessoas salvas no SharedPreferences

Criar nova activity

Criar nova activity

Criar nova activity

Modificar activity_listagem.xml

  • aplicar mesmo layout da activity_main.xml
  • deixar apenas o texto "IMC da Família"

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@drawable/fundo"
tools:context=".ListagemActivity">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:textSize="25sp"
        android:layout_marginTop="10dp"
        android:text="@string/imc_da_familia"
        android:textColor="@color/colorPrimary"
        />
</LinearLayout>
					

Navegação entre activities

  • crie um método chamado Listar na classe MainActivity que aciona a classe ListagemActivity, fazendo assim a navegação da tela Main para a tela Listagem
  • deve ser utilizado o recurso Intent que registra a intenção de fazer a interação de uma activity com outra
  • crie mais um botão na tela activity_main.xml que ao ser clicado chame o método Listar
  • ajuste a distância entre os elementos da tela, caso não estejam cabendo

Navegação entre activities

Navegação entre activities

Navegação entre activities

Modificar classe ListagemActivity

  • método onCreate: instanciar SharedPreferences e acionar metodo Buscar
  • método Buscar(): buscar todos os dados da memória e montar dinamicamente uma lista com os dados

package mobile.pitagoras.imc;

import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Gravity;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.google.gson.Gson;
import java.util.Map;
import mobile.pitagoras.imc.utils.ArmazenamentoIMC;
import mobile.pitagoras.imc.utils.PessoaIMC;

public class ListagemActivity extends AppCompatActivity {
    private ArmazenamentoIMC armazenamentoIMC;
    Gson gson = new Gson();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_listagem);
        getSupportActionBar().setDisplayShowTitleEnabled(false);
        getSupportActionBar().setDisplayShowHomeEnabled(true);
        getSupportActionBar().setIcon(R.mipmap.ic_launcher);
        armazenamentoIMC = new ArmazenamentoIMC(this);
        Buscar();
    }

    public void Buscar(){
        LinearLayout listagem_layout = (LinearLayout)findViewById(R.id.listagem_layout);
        Map todasPessoas = armazenamentoIMC.buscarTodos();
        listagem_layout.removeAllViews();
        LinearLayout.LayoutParams layoutParamsTitulo = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.WRAP_CONTENT,
                LinearLayout.LayoutParams.WRAP_CONTENT);
        layoutParamsTitulo.setMargins(10,30,0,0);
        layoutParamsTitulo.gravity = Gravity.CENTER;
        LinearLayout.LayoutParams layoutParamsNome = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.WRAP_CONTENT,
                LinearLayout.LayoutParams.WRAP_CONTENT);
        layoutParamsNome.setMargins(10,20,0,0);
        LinearLayout.LayoutParams layoutParamsDados = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.WRAP_CONTENT,
                LinearLayout.LayoutParams.WRAP_CONTENT);
        layoutParamsDados.setMargins(10,0,0,0);
        TextView textIMCFamilia = new TextView(this);
        textIMCFamilia.setTextSize(30);
        textIMCFamilia.setTextColor(ContextCompat.getColor(this, R.color.colorPrimary));
        textIMCFamilia.setText("IMC da Família");
        textIMCFamilia.setLayoutParams(layoutParamsTitulo);
        listagem_layout.addView(textIMCFamilia);
        for (Map.Entry entry : todasPessoas.entrySet()) {
            PessoaIMC pessoaIMC = gson.fromJson(entry.getValue().toString(), PessoaIMC.class);
            TextView textNome = new TextView(this);
            textNome.setLayoutParams(layoutParamsNome);
            textNome.setTextSize(20);
            textNome.setTextColor(ContextCompat.getColor(this, R.color.colorPrimaryDark));
            textNome.setText(pessoaIMC.nome);
            listagem_layout.addView(textNome);
            TextView textPeso = new TextView(this);
            textPeso.setLayoutParams(layoutParamsDados);
            textPeso.setTextColor(ContextCompat.getColor(this, R.color.colorAccent));
            textPeso.setText("peso: "+pessoaIMC.peso);
            listagem_layout.addView(textPeso);
            TextView textAltura = new TextView(this);
            textAltura.setLayoutParams(layoutParamsDados);
            textAltura.setTextColor(ContextCompat.getColor(this, R.color.colorAccent));
            textAltura.setText("altura: "+pessoaIMC.altura);
            listagem_layout.addView(textAltura);
            TextView textImc = new TextView(this);
            textImc.setLayoutParams(layoutParamsDados);
            textImc.setTextColor(ContextCompat.getColor(this, R.color.colorAccent));
            textImc.setText("IMC: "+pessoaIMC.imc);
            listagem_layout.addView(textImc);
            TextView textClassificacao = new TextView(this);
            textClassificacao.setLayoutParams(layoutParamsDados);
            textClassificacao.setTextColor(ContextCompat.getColor(this, R.color.colorAccent));
            textClassificacao.setText("classificação: "+pessoaIMC.classificacao);
            listagem_layout.addView(textClassificacao);
        }
    }
}